/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package biofilter.pipelines;

import java.util.Vector;
import biofilter.filters.RecordsFilter;
import biofilter.sources.RecordsSourceIF;
import biofilter.records.Record;

/**
 *
 * @author Daniel Quest
 * @date   Dec 31 2009
 */
public interface PipelineIF {
    
    /**
     * At pipeline setup, filters are added according to order or execution.  Consider the following pipeline with filter1, filter2, and source1.
     * Execution is as follows.  Data/references from the source flows through filter1, then through filter2, then to pipeline.  To setup such a pipeline:
     * 1: set the source of the composite filter
     * 2: add filter1 to the composite filter
     * 3: add filter2 to the composite filter
     * 4: call execPipeline.
     * @return
     * @throws Exception if filter is not added correctly
     */

    /**
     * 
     * @return Vector is most likely a list of references to the data created by the pipeline execution
     * @throws Exception
     */
    public Vector<Record> execPipeline() throws Exception;

    /**
     * setup(args) - sets up the command line parameters for the pipeline.
     */
    public void setup(String [] args)  throws org.apache.commons.cli.ParseException;


}
